package org.example.managere.service.feibiao;

import org.example.managere.dto.feibiao.AmArchivesOperationDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

/**
 * 电机运行数据服务接口
 */
public interface AmArchivesOperationService {
    
    /**
     * 保存电机运行数据
     * @param amArchivesOperationDto 电机运行数据DTO
     * @return 保存后的电机运行数据DTO
     */
    AmArchivesOperationDto save(AmArchivesOperationDto amArchivesOperationDto);
    
    /**
     * 根据ID查找电机运行数据
     * @param operationId 运行数据ID
     * @return 可能包含电机运行数据的Optional
     */
    Optional<AmArchivesOperationDto> findById(Integer operationId);
    
    /**
     * 更新电机运行数据
     * @param amArchivesOperationDto 电机运行数据DTO
     * @return 更新后的电机运行数据DTO
     */
    AmArchivesOperationDto update(AmArchivesOperationDto amArchivesOperationDto);
    
    /**
     * 删除电机运行数据
     * @param operationId 运行数据ID
     */
    void deleteById(Integer operationId);
    
    /**
     * 查找所有电机运行数据
     * @return 电机运行数据DTO列表
     */
    List<AmArchivesOperationDto> findAll();
    
    /**
     * 分页查询电机运行数据
     * @param pageable 分页参数
     * @return 电机运行数据DTO分页结果
     */
    Page<AmArchivesOperationDto> findAll(Pageable pageable);
    
    /**
     * 根据电机ID查询运行数据
     * @param motorId 电机ID
     * @return 电机运行数据DTO列表
     */
    List<AmArchivesOperationDto> findByMotorId(String motorId);
    
    /**
     * 获取电机的最新运行数据
     * @param motorId 电机ID
     * @return 可能包含最新电机运行数据的Optional
     */
    Optional<AmArchivesOperationDto> findLatestByMotorId(String motorId);
    
    /**
     * 根据温度范围查询运行数据
     * @param minTemp 最小温度
     * @param maxTemp 最大温度
     * @return 电机运行数据DTO列表
     */
    List<AmArchivesOperationDto> findByTemperatureBetween(Double minTemp, Double maxTemp);
} 